package java_class_work.week04.rectDemo;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * @Author Tiam
 * @Date 2022/10/3 22:00
 * @Description: Java反射 -- 可以获取当前类的有关信息
 */
public class Example6_8 {
    public static void main(String[] args) {
        Rect rect = new Rect();
        /*
            获取Java反射的三种方式
         */
        Class cs = rect.getClass();
        try {
            cs = Class.forName("java_class_work.week04.rectDemo.Rect");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        cs = Rect.class;
        System.out.println(cs == rect.getClass());
        // 获取类名
        String name = cs.getName();
        System.out.println(name);
        // 返回类中的构造方法
        Constructor[] con = cs.getDeclaredConstructors();
        for (int i = 0; i < con.length; i++) {
            System.out.println(con[i].toString());
        }
        // 返回类中的成员变量
        Field[] fields = cs.getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            System.out.println(fields[i].toString());
        }
        // 返回类中的方法
        Method[] methods = cs.getDeclaredMethods();
        for (int i = 0; i < methods.length; i++) {
            System.out.println(methods[i].toString());
        }
    }
}
